var app = getApp();
module.exports = Behavior({
  data: {
    header: {},
    goodsData: [],
    isLoadMore: true,
    page: 1,

    goodsDetail: {},
    ratio_data: {},
  },
  methods: {
    _getNetWork({
      url,
      data,
      header,
      success
    }) {
      let headers = {
        "Content-Type": "application/json",
        Accept: "application/json",
      };

      if (header) {
        headers = Object.assign(headers, header);
      }
      wx.showNavigationBarLoading();
      wx.request({
        url: url,
        data: data,
        header: headers,
        success: (res) => {
          wx.hideNavigationBarLoading({});
          success(res);
        },
        fail: function (res) {
          wx.showToast({
            title: "请求数据失败",
            icon: "loading",
            duration: 2000,
            mask: true,
          });
          console.log("请求数据失败:", url, res);
        },
      });
    },
    getCPSLogin(flag) {
      this.setData({
        page: 1,
        isLoadMore: true,
        goodsData: []
      });
      let CPSHeader = wx.getStorageSync("CPSHeader");
      if (CPSHeader) {
        this.data.header = JSON.parse(CPSHeader);
        if ((this.data.header.t + 60*7) > Math.round(new Date() / 1000)) {
          if (flag === 'list') {
            this.searchCPSGood();
          } else if (flag === 'good') {
            this.getGoodDetail();
          } else if (flag === 'link') {
            this.getCPSLink();
          } else {
            this.getCPSGood(0, this.data.datas.list[0].text);
          }
          return;
        }else {
          // CPSHeader缓存保留7分钟  过7分钟更换
          wx.removeStorageSync("CPSHeader");
        }
      }
      let _url = app.getNetAddresss("plugin.aggregation-cps.api.web.mergeLogin");
      app._getNetWork({
        url: _url,
        success: (res) => {
          let resData = res.data;
          if (resData.result == 1) {
            this.setData({
              header: resData.data.header
            });
            wx.setStorageSync("CPSHeader", JSON.stringify(this.data.header));
            if (flag === 'list') {
              this.searchCPSGood();
            } else if (flag === 'good') {
              this.getGoodDetail();
            } else if (flag === 'link') {
              this.getCPSLink();
            } else {
              this.getCPSGood(0, this.data.datas.list[0].text);
            }
          } else {
            wx.showToast({
              title: resData.msg,
              icon: "none",
            });
          }
        },
        fail: (error) => {
          console.log(error, "错误");
        },
      });
    },
    getPDDLogin(index, title) {
      // 拼多多授权
      this._getNetWork({
        url: "https://v3.biyingniao.com/api/v3/user/is_union_oauth",
        data: {
          platform: 2
        },
        header: this.data.header,
        success: (res) => {
          let resData = res.data;
          if (resData.code === 0) {
            if (resData.data.is_oauth) {
              if (index === 'list') {
                this.searchCPSGood();
              } else if (index === 'good') {
                this.getGoodDetail();
              } else {
                this.getCPSGood(index, title);
              }
            } else {
              wx.showModal({
                title: "提示",
                content: "请先确认授权",
                showCancel: false,
                success(res) {
                  if (res.confirm) {
                    let we_app_info = resData.data.oauth_url_info.we_app_info;
                    wx.navigateToMiniProgram({
                      appId: we_app_info.app_id,
                      path: we_app_info.page_path,
                      extraData: {},
                    });
                  }
                },
              });
            }

          }else if(response.code === 30004) {
            this.getCPSLogin(index, title);
          } else {
            wx.showToast({
              title: resData.message,
              icon: "none",
            });
          }
        }
      });
    },
    getCPSGood(index, title, flag) {
      // 装修组件使用
      if (!this.data.isLoadMore) {
        return;
      }
      this.setData({
        isLoadMore: false,
      });
      if (flag !== 'more') {
        this.setData({
          show_page: false,
          show_text: '加载中...'
        });
      }
      let url = "https://v3.biyingniao.com/api/v3/goods/pdd/search";
      if (this.data.datas.list[index].is_minApp == 2) {
        url = "https://v3.biyingniao.com/api/v3/goods/jd/search";
      }
      this._getNetWork({
        url: url,
        data: {
          keyword: title,
          page: this.data.page
        },
        header: this.data.header,
        success: (res) => {
          let resData = res.data;
          if (resData.code === 0) {
            if (this.data.page === 1) {
              this.getRatio();
            }
            let goodsData = [];
            if (flag !== 'more') {
              goodsData = resData.data.data || [];
            } else {
              goodsData = this.data.goodsData.concat(resData.data.data || []);
            }
            this.setData({
              isLoadMore: resData.data.has_next,
              show_page: true,
              goodsData: goodsData
            });
          } else if (resData.code === 30009 || resData.code === 10000) {
            // 需要登录授权
            this.setData({
              isLoadMore: true,
            });
            this.getPDDLogin(index, title, flag);
          } else if (resData.code === 30004) {
            // 签名过期
            this.getCPSLogin(index);
          } else {
            this.setData({
              isLoadMore: true,
              show_page: false,
              show_text: '数据报错'
            });
            wx.showToast({
              title: resData.message,
              icon: "none",
            });
          }
        }
      });
    },
    searchCPSGood() {
      // 搜索页使用
      if (!this.data.isLoadMore) {
        return;
      }
      this.setData({
        isLoadMore: false,
      });
      let url = "https://v3.biyingniao.com/api/v3/goods/pdd/search";
      if (this.data.searchActive === 'jd') {
        url = "https://v3.biyingniao.com/api/v3/goods/jd/search";
      }

      let json = {
        keyword: this.data.searchActive === 'jd' ? this.data.searchKey || '百货' : this.data.searchKey,
        page: this.data.page
      };
      if (!this.data.searchKey && this.data.channel_type) {
        json = {
          channel_type: this.data.channel_type,
          page: this.data.page
        };
        url = "https://v3.biyingniao.com/api/v3/goods/pdd/recommend";
        if (this.data.searchActive === 'jd') {
          url = "https://v3.biyingniao.com/api/v3/goods/jd/jf";
        }
      }

      if (this.data.searchKey) {
        this.data.channel_type_name = "搜索";
      } else if (this.data.options.channel_type_name) {
        this.data.channel_type_name = `${this.data.options.channel_type_name}${this.data.searchActive === 'jd' ? '-京东': '-拼多多'}` || "商品列表";
      }
      wx.setNavigationBarTitle({
        title: this.data.channel_type_name,
      });
      this._getNetWork({
        url: url,
        data: json,
        header: this.data.header,
        success: (res) => {
          let resData = res.data;
          if (resData.code === 0) {
            if (this.data.page === 1) {
              this.getRatio();
            }
            this.setData({
              isLoadMore: resData.data.has_next,
              goodsData: this.data.goodsData.concat(resData.data.data || []),
              page: this.data.page += 1,
            });
          } else if (resData.code === 30009 || resData.code === 10000) {
            // 需要登录授权
            this.setData({
              isLoadMore: true,
            });
            this.getPDDLogin('list');
          } else if (resData.code === 30004) {
            // 签名过期
            this.getCPSLogin('list');
          } else {
            this.setData({
              isLoadMore: true,
            });
            wx.showToast({
              title: resData.message,
              icon: "none",
            });
          }
        }
      });
    },
    getGoodDetail() {
      // 商品详情页使用
      this._getNetWork({
        url: "https://v3.biyingniao.com/api/v3/goods/detail",
        data: {
          item_id: this.data.good.item_id,
          platform_id: this.data.good.platform_id,
          activity_id: this.data.good.activity_id
        },
        header: this.data.header,
        success: (res) => {
          let resData = res.data;
          if (resData.code === 0) {
            this.setData({
              goodsDetail: resData.data || {},
            });
            this.getRatio();
          } else if (resData.code === 30009 || resData.code === 10000) {
            // 需要登录授权
            this.getPDDLogin('good');
          } else if (resData.code === 30004) {
            // 签名过期
            this.getCPSLogin('good');
          } else {
            wx.showToast({
              title: resData.message,
              icon: "none",
            });
          }
        }
      });
    },
    getCPSLink() {
      // 推广取链
      this._getNetWork({
        url: "https://v3.biyingniao.com/api/v3/popularize/cps",
        data: {
          id: this.data.id,
          phone: this.data.phone,
        },
        header: this.data.header,
        success: (res) => {
          let resData = res.data;
          if (resData.code === 0) {
            wx.navigateToMiniProgram({
              appId: resData.data.wx_app_id,
              path: resData.data.wx_path,
              extraData: {},
            });
          } else {
            wx.showToast({
              title: resData.message,
              icon: "none",
            });
          }
        }
      });
    },
    getRatio() {
      if (this.data.ratio_data && this.data.ratio_data.ratio) {
        return;
      }
      // discount_price*tk_rate/100*0.78 * 0.97*ratio/100
      let _url = app.getNetAddresss("plugin.aggregation-cps.api.setting.index");
      app._getNetWork({
        url: _url,
        success: (res) => {
          let resData = res.data;
          if (resData.result == 1) {
            this.setData({
              ratio_data: resData.data,
              ratioCommissionAmount: (this.data.goodsDetail.discount_price * (this.data.goodsDetail.tk_rate / 100) * 0.78 * 0.97 * (resData.data.ratio / 100)).toFixed(2),
              shareCommissionAmount: Number((this.data.goodsDetail.discount_price * (this.data.goodsDetail.tk_rate / 100) * 0.78 * 0.97 * (resData.data.agent_ratio / 100)).toFixed(2))
            });
          } else {
            wx.showToast({
              title: resData.msg,
              icon: "none",
            });
          }
        },
        fail: (error) => {
          console.log(error, "错误");
        },
      });
    },
  },
});